/*
 * Iterator.hpp
 *
 *  Created on: 23/07/2012
 *      Author: marcio
 */

#ifndef ITERATOR_HPP_
#define ITERATOR_HPP_

template<typename T>
class Iterator{
public:
	virtual bool start() = 0;

	virtual bool startFrom(T* elem) = 0;

	virtual bool startFromIndex(long i) = 0;

	virtual bool hasNext() = 0;

	virtual bool getNext() = 0;
};

template<typename T>
class Modificator : Iterator<T>{
public:
	bool start() = 0;

	bool startFrom(T* elem) = 0;

	bool startFromIndex(long i) = 0;

	bool hasNext() = 0;

	bool getNext() = 0;

	bool modify() = 0;

	bool erase() = 0;
};

#endif /* ITERATOR_HPP_ */
